"""
所有示例都会有如下代码，大概含义如下
程序开始运行：创建临时目录，把工作目录切换到临时目录里面
程序结束运行：关闭所有打开的文件，切换到真实目录，清除临时目录
"""
# Reproduce book environment
# 使用random的seed方法，复制跟书籍一样的环境
import random
# Write all output to a temporary directory
# 将所有输出写入临时目录
import atexit
import gc
import io
import os
import tempfile
import sys

random.seed(1234)

TEST_DIR = tempfile.TemporaryDirectory()
atexit.register(TEST_DIR.cleanup)

# Make sure Windows processes exit cleanly
# 确保windows进程干净的退出
OLD_CWD = os.getcwd()
atexit.register(lambda: os.chdir(OLD_CWD))
os.chdir(TEST_DIR.name)


def close_open_files():
    everything = gc.get_objects()
    for obj in everything:
        if isinstance(obj, io.IOBase):
            obj.close()


atexit.register(close_open_files)

# Example 1
print(sys.version_info)
print(sys.version)
